package com.jielihaofeng.atguigu.netty.http;

import com.jielihaofeng.atguigu.netty.simple.NettyServerHandler;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;

/**
 * @author Johnnie Wind
 * @description http服务端 快速入门实例 - HTTP服务 实例要求：使用 IDEA 创建 Netty 项目 Netty 服务器在 6668 端口监听，浏览器发出请求 http://localhost:6668/
 * 服务器可以回复消息给客户端"Hello!我是服务器5",并对特定请求资源进行过滤。 目的：Netty 可以做 Http 服务开发，并且理解 Handler 实例和客户端及其请求的关系。
 * @date 2021/11/26 15:41
 */
public class TestServer {
    public static void main(String[] args) throws Exception {

        EventLoopGroup bossGroup = new NioEventLoopGroup(1);
        EventLoopGroup workerGroup = new NioEventLoopGroup();

        try {
            ServerBootstrap serverBootstrap = new ServerBootstrap();

            serverBootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).childHandler(new TestServerInitializer());
            // 谷歌浏览器会屏蔽端口
            // 6000： // X11
            //6665： // Alternate IRC [Apple addition]
            //6666： // Alternate IRC [Apple addition]
            //6667： // Standard IRC [Apple addition]
            //6668： // Alternate IRC [Apple addition]
            //6669： // Alternate IRC [Apple addition]
            ChannelFuture channelFuture = serverBootstrap.bind(7000).sync();

            channelFuture.channel().closeFuture().sync();

        }finally {
            bossGroup.shutdownGracefully();
            workerGroup.shutdownGracefully();
        }
    }
}
